package org.zhuyx.ch02.shili.aop;
import org.aspectj.lang.ProceedingJoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author 茜茜
 * @date 2024-12-06 17:49
 */
public class TimeSpanAspect {
    private static final Logger log = LoggerFactory.getLogger(LoggerAspect.class);
public Object around(ProceedingJoinPoint jp) throws Throwable{
    log.info("【环绕增强-前置】记录{}方法执行的开始时间.",jp.getSignature().getName());
    //进入方法之前就记录开始时间
    long startTime = System.currentTimeMillis();
    try {
        // 执行方法
        Object result = jp.proceed();
        log.info("【环绕增强-后置】记录{}方法执行的结束时间,用时{}ms.",jp.getSignature().getName(),result);
        return result;
    }catch (Throwable e){
        log.info("【环绕增强-异常抛出】记录{}方法执行的结束时间,用时{}ms.",jp.getSignature().getName(),e.getMessage());
        throw e;
    }finally {
        long endTime=System.currentTimeMillis();
        log.info("【环绕增强-最终】记录{}方法执行的结束时间,用时{}ms.",jp.getSignature().getName(),(endTime-startTime));
    }
    }


}
